// Generator 
// 异步编程的一种方案，返回值是遍历器对象
// 获取函数中的值用for... of   或者next()

// function* hello() {
//     yield 'hello';
//     yield 'aaa';
//     yield 'sss';
//     return 'end'
// }a
// let obj = hello();
// console.log(obj) //输出的是编辑器对象

// for (let k of obj) {
//     console.log(k) //hello  aaa sss 、
// }
// //获取每一个的时候用next()
// console.log(obj.next()) //获取第一个 {value: "hello", done: false}

// for (let k of obj) {
//     console.log(k) // aaa sss 、
// }

// async  
// async 是Generator的语法糖
// 返回的不是一个promise, 
// 第一种
// async function getstring() {
//     await...
//     await...
// }
// 第二种
// let getstring = async function() {
//     await
//     await
// }

// async function name(params) {
//     await new Promise((resolve, reject) => {
//         setTimeout(() => {
//             resolve('abc')
//         })
//     })
//     return 'aaaa'
// }
// console.log(name()) //Promise {<pending>}
// name().then((res) => {
//     console.log(res) //aaa
// })


// async function name(params) {
//     let aa = await new Promise((resolve, reject) => {
//         setTimeout(() => {
//             resolve('abc')
//         })
//     })
//     console.log(aa) //abc
// }
// name()



// async function fn() {
//     let datas = await ajax('/api/getuid'); // await 好比就是.then
//     console.log(datas) // 获取到uid
//     let data = JSON.parse(datas).data;
//     return ajax('/api/datalist', `uid=${data}`)
// }
// fn().then((res) => {
//     console.log(res)
// })

// 应用try。。。catch
// async function fn() {
//     let datas
//     try {
//         datas = await ajax('/api/getuid'); // await 好比就是.then
//     } catch (error) {
//         return error
//     }
//     console.log(datas) // 获取到uid
//     let data = JSON.parse(datas).data;
//     return ajax('/api/datalist', `uid=${data}`)
// }
// fn().then((res) => {
//     console.log(res)
// })

// async function fn() {
//     return await Promise.all([ajax('/api/getuid'), ajax('/api/datalist', `uid=${data}`)])
// }
// fn().then((res) => {
//     console.log(res)
// })


// 文件修改
// var fs = require('fs');
// //console.log(fs)

// function readFile(url) {
//     return new Promise((resolve, reject) => {
//         fs.readFile(url, 'utf-8', (error, data) => {
//             if (error) {
//                 return reject(error)
//             } else {
//                 resolve(data)
//             }
//         })
//     })
// }

// async function getfile() {
//     let tit = await readFile('./index.html'); //读取index.html文件  字符串
//     let bac = await readFile('./aa.css'); //读取aa.css文件   字符串
//     let newtit = tit.replace(`{{style}}`, `${bac}`) // 替换字符
//     return newtit
// }
// getfile().then((res) => {
//     console.log(res)
// })